const path = require("path");
const webpack = require("webpack");
module.exports = {
  publicPath: "./", // 基本路径
  outputDir: "dist", // 输出文件目录
  lintOnSave: false, // eslint-loader 是否在保存的时候检查
  // webpack配置
  chainWebpack: config => {},
  configureWebpack: config => {
    console.log(process.env.NODE_ENV);
    if (process.env.NODE_ENV === "production") {
      // 为生产环境修改配置...
      config.mode = "production";
    } else {
      // 为开发环境修改配置...
      config.mode = "development";
    }
    Object.assign(config, {
      // 开发生产共同配置
      resolve: {
        //自动添加文件名后缀
        extensions: [".js", ".json", "vue", ".scss"],
        alias: {
          "@": path.resolve(__dirname, "./src"),
          "@c": path.resolve(__dirname, "./src/components"),
        } // 别名配置
      }
    });
  },
  productionSourceMap: false, // 生产环境是否生成 sourceMap 文件
  // css相关配置
  css: {
    // 是否使用css分离插件 ExtractTextPlugin
    extract: process.env.NODE_ENV === "production",
    // 开启 CSS source maps?
    sourceMap: false,
    // css预设器配置项
    loaderOptions: {
      postcss: {
        plugins: [
          // 把px单位换算成rem单位
          require("postcss-pxtorem")({
            rootValue: 192, // 换算的基数(设计图750的根字体为32)
            selectorBlackList: [".px-"], // 要忽略的选择器并保留为px。
            propList: ["*"], //可以从px更改为rem的属性。
            minPixelValue: 2 // 设置要替换的最小像素值。
          }),
          //自动添加浏览器前缀
          require("autoprefixer")({
            overrideBrowserslist: [
              "last 100 versions"
            ]
          })
        ]
      }
    },
    // 启用 CSS modules for all css / pre-processor files.
    requireModuleExtension: true
  },
  parallel: require("os").cpus().length > 1, //该选项在系统的 CPU 有多于一个内核时自动启用，仅作用于生产构建。
  pwa: {}, // PWA 插件相关配置
  // webpack-dev-server 相关配置
  devServer: {
    open: false,
    host: "0.0.0.0", // 允许外部ip访问
    port: 8088, // 端口
    https: false, // 启用https
    proxy: {
      "/devApi": {
        target: "http://www.web-jshtml.cn/productapi/token",
        //将主机标头的原点更改为目标URL
        changeOrigin: true, 
        // 允许websockets跨域
        // ws: true,
        pathRewrite: {
          "^/devApi": ""
        }
      }
    }, // 代理转发配置，用于调试环境
    overlay: {
      warnings: true,
      errors: true
    }, // 错误、警告在页面弹出
  },
  // 第三方插件配置
  pluginOptions: {},
  //配置jquery
  configureWebpack: {
    plugins: [
      new webpack.ProvidePlugin({
        $: "jquery"
      })
    ]
  }
};
